package org.edu.common.system.api;//package org.edu.common.system.api;
//
//import com.alibaba.fastjson.JSONObject;
//import org.edu.common.api.CommonAPI;
//import org.edu.common.api.dto.OnlineAuthDTO;
//import org.edu.common.api.dto.message.*;
//import org.edu.common.constant.ServiceNameConstants;
//import org.edu.common.system.api.factory.SysBaseAPIFallbackFactory;
//import org.edu.common.system.vo.*;
//import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.stereotype.Component;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestParam;
//
//import java.util.List;
//import java.util.Set;
//
///**
// * 相比较local版
// * 去掉了一些方法：
// * addLog getDatabaseType queryAllDepart
// * queryAllUser(Wrapper wrapper) queryAllUser(String[] userIds, int pageNo, int pageSize)
// * 修改了一些方法：
// * createLog
// * sendSysAnnouncement 只保留了一个，其余全部干掉
// *
// * cloud接口数量43  local：35 common：9  额外一个特殊queryAllRole一个当两个用
// */
//@Component
//@FeignClient(contextId = "sysBaseRemoteApi",
//        url="192.168.0.13:6101",
//        value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = SysBaseAPIFallbackFactory.class)
//public interface ISysBaseAPI extends CommonAPI {
//
//    /**
//     * 1发送系统消息
//     * @param message 使用构造器赋值参数 如果不设置category(消息类型)则默认为2 发送系统消息
//     */
//    @PostMapping("/sys/api/sendSysAnnouncement")
//    void sendSysAnnouncement(@RequestBody MessageDTO message);
//
//    /**
//     * 2发送消息 附带业务参数
//     * @param message 使用构造器赋值参数
//     */
//    @PostMapping("/sys/api/sendBusAnnouncement")
//    void sendBusAnnouncement(@RequestBody BusMessageDTO message);
//
//    /**
//     * 3通过模板发送消息
//     * @param message 使用构造器赋值参数
//     */
//    @PostMapping("/sys/api/sendTemplateAnnouncement")
//    void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message);
//
//    /**
//     * 4通过模板发送消息 附带业务参数
//     * @param message 使用构造器赋值参数
//     */
//    @PostMapping("/sys/api/sendBusTemplateAnnouncement")
//    void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message);
//
//    /**
//     * 5通过消息中心模板，生成推送内容
//     * @param templateDTO 使用构造器赋值参数
//     * @return
//     */
//    @PostMapping("/sys/api/parseTemplateByCode")
//    String parseTemplateByCode(@RequestBody TemplateDTO templateDTO);
//
//    /**
//     * 6根据用户id查询用户信息
//     * @param id
//     * @return
//     */
//    @GetMapping("/sys/api/getUserById")
//    LoginUser getUserById(@RequestParam("id") String id);
//
//    /**
//     * 7通过用户账号查询角色集合
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/getRolesByUsername")
//    List<String> getRolesByUsername(@RequestParam("username") String username);
//
//    /**
//     * 8通过用户账号查询部门集合
//     * @param username
//     * @return 部门 id
//     */
//    @GetMapping("/sys/api/getDepartIdsByUsername")
//    List<String> getDepartIdsByUsername(@RequestParam("username") String username);
//
//    /**
//     * 9通过用户账号查询部门 name
//     * @param username
//     * @return 部门 name
//     */
//    @GetMapping("/sys/api/getDepartNamesByUsername")
//    List<String> getDepartNamesByUsername(@RequestParam("username") String username);
//
//    /**
//     * 10获取数据字典
//     * @param code
//     * @return
//     */
//    @GetMapping("/sys/api/queryDictItemsByCode")
//    List<DictModel> queryDictItemsByCode(@RequestParam("code") String code);
//
//    /** 11查询所有的父级字典，按照create_time排序 */
//    @GetMapping("/sys/api/queryAllDict")
//    List<DictModel> queryAllDict();
//
//    /**
//     * 12查询所有分类字典
//     * @return
//     */
//    @GetMapping("/sys/api/queryAllDSysCategory")
//    List<SysCategoryModel> queryAllDSysCategory();
//
//    /**
//     * 13获取表数据字典
//     * @param table
//     * @param text
//     * @param code
//     * @return
//     */
//    @GetMapping("/sys/api/queryTableDictItemsByCode")
//    List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code);
//
//    /**
//     * 14查询所有部门 作为字典信息 id -->value,departName -->text
//     * @return
//     */
//    @GetMapping("/sys/api/queryAllDepartBackDictModel")
//    List<DictModel> queryAllDepartBackDictModel();
//
//    /**
//     * 15根据业务类型 busType 及业务 busId 修改消息已读
//     */
//    @GetMapping("/sys/api/updateSysAnnounReadFlag")
//    public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId") String busId);
//
//    /**
//     * 16查询表字典 支持过滤数据
//     * @param table
//     * @param text
//     * @param code
//     * @param filterSql
//     * @return
//     */
//    @GetMapping("/sys/api/queryFilterTableDictInfo")
//    List<DictModel> queryFilterTableDictInfo(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("filterSql") String filterSql);
//
//    /**
//     * 17查询指定table的 text code 获取字典，包含text和value
//     * @param table
//     * @param text
//     * @param code
//     * @param keyArray
//     * @return
//     */
//    @Deprecated
//    @GetMapping("/sys/api/queryTableDictByKeys")
//    public List<String> queryTableDictByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keyArray") String[] keyArray);
//
//    /**
//     * 18查询所有用户 返回ComboModel
//     * @return
//     */
//    @GetMapping("/sys/api/queryAllUserBackCombo")
//    public List<ComboModel> queryAllUserBackCombo();
//
//    /**
//     * 19分页查询用户 返回JSONObject
//     * @return
//     */
//    @GetMapping("/sys/api/queryAllUser")
//    public JSONObject queryAllUser(@RequestParam(name = "userIds", required = false) String userIds, @RequestParam(name = "pageNo", required = false) Integer pageNo, @RequestParam(name = "pageSize", required = false) int pageSize);
//
//
//    /**
//     * 20获取所有角色 带参
//     * roleIds 默认选中角色
//     * @return
//     */
//    @GetMapping("/sys/api/queryAllRole")
//    public List<ComboModel> queryAllRole(@RequestParam(name = "roleIds", required = false) String[] roleIds);
//
//    /**
//     * 21通过用户账号查询角色Id集合
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/getRoleIdsByUsername")
//    public List<String> getRoleIdsByUsername(@RequestParam("username") String username);
//
//    /**
//     * 22通过部门编号查询部门id
//     * @param orgCode
//     * @return
//     */
//    @GetMapping("/sys/api/getDepartIdsByOrgCode")
//    public String getDepartIdsByOrgCode(@RequestParam("orgCode") String orgCode);
//
//    /**
//     * 23查询所有部门
//     * @return
//     */
//    @GetMapping("/sys/api/getAllSysDepart")
//    public List<SysDepartModel> getAllSysDepart();
//
//    /**
//     * 24查找父级部门
//     * @param departId
//     * @return
//     */
//    @GetMapping("/sys/api/getParentDepartId")
//    DictModel getParentDepartId(@RequestParam("departId") String departId);
//
//    /**
//     * 25根据部门Id获取部门负责人
//     * @param deptId
//     * @return
//     */
//    @GetMapping("/sys/api/getDeptHeadByDepId")
//    public List<String> getDeptHeadByDepId(@RequestParam("deptId") String deptId);
//
//    /**
//     * 26给指定用户发消息
//     * @param userIds
//     * @param cmd
//     */
//    @GetMapping("/sys/api/sendWebSocketMsg")
//    public void sendWebSocketMsg(@RequestParam("userIds") String[] userIds, @RequestParam("cmd") String cmd);
//
//    /**
//     * 27根据id获取所有参与用户
//     * userIds
//     * @return
//     */
//    @GetMapping("/sys/api/queryAllUserByIds")
//    public List<LoginUser> queryAllUserByIds(@RequestParam("userIds") String[] userIds);
//
//    /**
//     * 28将会议签到信息推动到预览
//     * userIds
//     * @return
//     * @param userId
//     */
//    @GetMapping("/sys/api/meetingSignWebsocket")
//    void meetingSignWebsocket(@RequestParam("userId") String userId);
//
//    /**
//     * 29根据name获取所有参与用户
//     * userNames
//     * @return
//     */
//    @GetMapping("/sys/api/queryUserByNames")
//    List<LoginUser> queryUserByNames(@RequestParam("userNames") String[] userNames);
//
//
//    /**
//     * 30获取用户的角色集合
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/getUserRoleSet")
//    Set<String> getUserRoleSet(@RequestParam("username") String username);
//
//    /**
//     * 31获取用户的权限集合
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/getUserPermissionSet")
//    Set<String> getUserPermissionSet(@RequestParam("username") String username);
//
//    /**
//     * 32判断是否有online访问的权限
//     * @param onlineAuthDTO
//     * @return
//     */
//    @PostMapping("/sys/api/hasOnlineAuth")
//    boolean hasOnlineAuth(@RequestBody OnlineAuthDTO onlineAuthDTO);
//
//    /**
//     * 33通过部门id获取部门全部信息
//     */
//    @GetMapping("/sys/api/selectAllById")
//    SysDepartModel selectAllById(@RequestParam("id") String id);
//
//    /**
//     * 34根据用户id查询用户所属公司下所有用户ids
//     * @param userId
//     * @return
//     */
//    @GetMapping("/sys/api/queryDeptUsersByUserId")
//    List<String> queryDeptUsersByUserId(@RequestParam("userId") String userId);
//
//
//    //---
//
//    /**
//     * 35查询用户角色信息
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/queryUserRoles")
//    Set<String> queryUserRoles(@RequestParam("username") String username);
//
//    /**
//     * 36查询用户权限信息
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/queryUserAuths")
//    Set<String> queryUserAuths(@RequestParam("username") String username);
//
//    /**
//     * 37根据 id 查询数据库中存储的 DynamicDataSourceModel
//     *
//     * @param dbSourceId
//     * @return
//     */
//    @GetMapping("/sys/api/getDynamicDbSourceById")
//    DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId") String dbSourceId);
//
//    /**
//     * 38根据 code 查询数据库中存储的 DynamicDataSourceModel
//     *
//     * @param dbSourceCode
//     * @return
//     */
//    @GetMapping("/sys/api/getDynamicDbSourceByCode")
//    DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode);
//
//    /**
//     * 39根据用户账号查询用户信息 CommonAPI中定义
//     * @param username
//     */
//    @GetMapping("/sys/api/getUserByName")
//    LoginUser getUserByName(@RequestParam("username") String username);
//
//    /**
//     * 40字典表的 翻译
//     * @param table
//     * @param text
//     * @param code
//     * @param key
//     * @return
//     */
//    @GetMapping("/sys/api/translateDictFromTable")
//    String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key);
//
//    /**
//     * 41普通字典的翻译
//     * @param code
//     * @param key
//     * @return
//     */
//    @GetMapping("/sys/api/translateDict")
//    String translateDict(@RequestParam("code") String code, @RequestParam("key") String key);
//
//    /**
//     * 42查询数据权限
//     * @return
//     */
//    @GetMapping("/sys/api/queryPermissionDataRule")
//    List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath") String requestPath, @RequestParam("username") String username);
//
//    /**
//     * 43查询用户信息
//     * @param username
//     * @return
//     */
//    @GetMapping("/sys/api/getCacheUser")
//    SysUserCacheInfo getCacheUser(@RequestParam("username") String username);
//
//    /**
//     * 36根据多个用户账号(逗号分隔)，查询返回多个用户信息
//     * @param usernames
//     * @return
//     */
//    @GetMapping("/sys/api/queryUsersByUsernames")
//    List<JSONObject> queryUsersByUsernames(String usernames);
//
//    /**
//     * 37根据多个部门编码(逗号分隔)，查询返回多个部门信息
//     * @param orgCodes
//     * @return
//     */
//    @GetMapping("/sys/api/queryDepartsByOrgcodes")
//    List<JSONObject> queryDepartsByOrgcodes(String orgCodes);
//}
